- Git
- Works
- コーディング
- 雑談
WakuとCloudflare Pagesでマネして作るGitHub PR一覧サイト
Note
この記事は React Tokyo Advent Calendar 2025の一記事です。
React Tokyo Advent Calendar 2025はこちらからご覧ください。
はじめに
先日のReact Tokyo Advent Calendarで書かれた じょうげんさんの記事 を読んで、自分のPRを可視化するのが面白いなと思いました。「自分の活動が一覧で見えると、モチベーション上がるのかな…」と思い、私も推しスタックの実装で作ってみることにしました。
完成したサイトはこちらです: https://sasagar-pr.kent-and-co.com
コードはこちらに: https://github.com/sasagar/sasagar-pr
今回は、Wakuという比較的新しいReactフレームワークとCloudflare Pagesを組み合わせて実装しました。シンプルながら高速で、メンテナンスしやすい構成になったので、その実装について紹介します。
Wakuは最近よく使っています。
なぜWakuを選んだのか
WakuはReact Server Componentsをベースにした、軽量でミニマルなフレームワークです。今回PR一覧サイトを作るにあたって、以下の理由からWakuを選びました。
- シンプルな構成: PR一覧という単機能のサイトには、大規模フレームワークの機能は過剰でした
- RSC(React Server Components)のネイティブサポート: サーバーサイドでデータフェッチを完結できる
- 静的サイト生成が容易: ビルド時にデータを取得して静的化できる
- Cloudflare Pagesとの相性: エッジでの高速配信に最適化されている
実際に使ってみて、設定が最小限で済み、コードもシンプルに保てるのが印象的でした。
Cloudflare Pagesで実現する高速配信
インフラにはCloudflare Pagesを採用しました。Wakuで生成した静的ファイルをCloudflareのエッジネットワークから配信することで、世界中どこからアクセスしても高速にページが表示されます。
Cloudflare Pagesの良いところ:
- GitHubと連携した自動デプロイ
- 無料枠でも十分な性能
- エッジでのキャッシング
- カスタムドメインの設定が簡単
デプロイはwrangler pages deploy一発で完了するので、開発体験も良好です。
実際にはGitHub Actionsを使って適宜更新をかけています。
実装のポイント
GitHub APIとの連携
PRデータの取得にはGitHub APIを使用しています。WakuのServer Componentsを活用することで、APIトークンをクライアントに露出させることなく、サーバーサイドで安全にデータを取得できます。
// Server Component内でのデータフェッチ例const prs = await fetchPullRequests(username);静的生成とデータの鮮度
PRデータは頻繁に変わるため、定期的な更新が必要です。今回はGitHub Actionsで定期的にビルド・デプロイを実行することで、最新のPR情報を反映しています。
UIのシンプルさ
機能を絞り込むことで、コードもUIもシンプルに保ちました。PRの状態(Open/Merged/Closed)でフィルタリングできる機能と、各PRの詳細情報(コミット数、変更行数など)を一覧で確認できるようにしています。
技術スタック比較
元記事の作者さん含め、同じ「PR一覧サイト」でも選ぶ技術が異なるのが面白いところです。
| 開発者 | インフラ | フレームワーク | 特徴 |
|---|---|---|---|
| じょうげんさん | Vercel | Next.js | Yamada UIでリッチなUI |
| ryoppippiさん | Cloudflare | Svelte | UnoCSS、軽量 |
| Kanonさん | Cloudflare | HonoX | サーバーレス |
| ささぴよ | Cloudflare Pages | Waku | RSC、シンプル構成 |
それぞれの推し技術が反映されていて、同じ目的でもアプローチが全く違うのが面白いですね。そして、これくらいの規模感だと比較的簡単に完成品を作ることができるのがとても良いです。
Wakuを使ってみた感想
Wakuはまだ新しいフレームワークですが、React Server Componentsの恩恵を受けながら、シンプルな実装ができる点が魅力的でした。大規模な機能は不要で、静的サイト生成で十分なプロジェクトには特に向いていると感じました。
一方で、エコシステムなどがまだ発展途上な部分もあると思いますので、既存のNext.jsやRemixと比べるとライブラリの選択肢は限られるかもしれません。とはいえ基本的な利用に際しては何も問題がなく、今後の発展に期待しつつ、徐々にプロジェクトで試していきたいと思います。
まとめ
じょうげんさんの記事に触発されて、自分なりのPR一覧サイトをWakuとCloudflare Pagesで実装しました。シンプルな構成ながら、高速で保守しやすいサイトが作れたと思います。
自分にとっては、活動が可視化されたことで「これだけ頑張ったのかー」となって、モチベーションをキープできる気がしました。皆さんもぜひ、自分だけのPRダッシュボードを作ってみてはいかがでしょうか。異なる技術スタックで実装するのも面白いですよ!